1. Field of Invention
The present invention generally relates to data serialization systems to transfer data across computer processes and specifically to data serializations systems that use native data format of a data source to eliminate parsing and alignment overheads.
2. Prior Art US Patent
Data transfer systems across computer processes or programs transfer data in textual or binary formats. Such transfer can be for independent data units or related data units. If related data units are transferred then data is first serialized so that dependency between data units can be maintained. Data serialization is a process by which interdependent data units are placed one after the other so that a set of units can be transferred across computer systems and dependency graph or tree can be reconstructed after the transfer.
Data serialization is usually used in binary data transfer systems. There are several binary data transfer systems in prior art, but all of the known systems of prior art first convert the binary data into a common data format that can be accessed across several computer systems. Data formats specify how data is organized in memory of a computer process. This organization is controlled by the compiler and the processor of a computer system. Specifically, data organization can differ in memory alignment of data structures, and endianness of primitive data types. For example in a little endian system, the high order byte of a four byte data is at the end of the four byte stream, whereas in big endian systems this order is reversed. Also, memory alignment between different compilers can vary. Compilers introduce padding bytes in between data structure elements. This improves data access speeds, but these are non standard across compilers.
Hence exchange of binary data between different processes running on different computer systems that may be executing different computer languages is a challenging task.
Thus most prior art systems recommend an approach where binary data from a data source is first converted into a common format, and then transferred, so that destination processes can convert binary data from the common format to required native data format of data destination.
This approach saves the effort of writing converters for each of the destinations from each of the sources. But such systems introduce an additional level of processing on both the data source and data receiver. This can get quite expensive when a data source is a server that is accessed millions of times by data receivers. In particular, such a server could be a web server and the data receiver could be a mobile device with a web browser.
A web server usually has to process several thousand requests concurrently and transforming binary data to a common data format for each request can be expensive and consume a lot of processing power that degrades system performance severely.
Similarly, if a mobile device that receives binary data, has to convert from a common data format to a native data format, then there is additional processing required. This will decrease the amount of time a mobile device can be used, as additional processing will consume more battery power.
In the case where both data source and data destination are mobile devices, this problem is compounded. This can occur in cases where a data source is an accessory device to a main mobile device. In this case an accessory acts as a server and it has to do minimal processing of data that is to be serialized, and the client device that is also a mobile device needs to perform minimum processing to use the data received.
Hence it can be seen that there is a need to reduce the amount of processing that has to be done either at the source of data or destination of data or at both places, while transferring binary data that may need to be serialized.
Such a system can only be implemented if data format along with a data source compatible data access software program is communicated from a data source to data destination, thus enabling the data source to send out data without conversion and receive incoming data from data destination in its own data format.
Such a system is not known to exist in prior art.
Following paragraphs in current section describe relevant prior arts in this field.
Prior art US Doc 20080163269 proposes a remote procedure calling system that offers selective decoding of output parameters of a response from a server in a client program to defer decoding logic until data is used at a client. But this system still uses an intermediate format to pass data between client and server that is created using a interface definition language. Referring to FIG. 17 of this prior art document, it is clear that the request message contains information about actual request data and the corresponding byte sequence. Similarly referring to FIG. 19 of this prior art document, it is clear that the byte sequence of each of the data types is carried in each response message.
Hence it can be seen that although this system offers selective decoding of message contents, this system still uses intermediate format for both request and responses. This system only postpones the decoding to a point when access to certain data is needed, but does not eliminate the decoding and encoding process in either the server or the client. Hence if a client needs to access all data units, then the client would have to decode all data units. Similarly if a server needs to use all data in an input message, then it has to decode all the data units from the intermediate format that specifies the byte sequence and the type of data along with the data itself. Hence it is clear that this system cannot eliminate data decoding but merely postpones the processing to a later stage.
In order for a system to provide reduced processing while transferring data, the processing should be reduced in client or server or both, and it should be applicable all the time and not in selective time periods. Hence it is clear that this system does not address the need to transfer serialized binary data in the native data format of a data source to reduce usage of computing resources.
Prior art US Doc 20020120793 proposes a remote procedure calling system where a proxy object is automatically generated at a client based on the request profile. But this system does not address the need to transfer serialized binary data in the native data format of a data source to reduce usage of computing resources.
Prior art US Doc 20020107890 proposes a system to make a remote procedure call from a client to a server using a script that is uploaded into the server which then executes that code and returns the results. This system tries to avoid native code download into a browser as a plugin and uses a script that is to be executed at the server. But this system does not address the need to transfer serialized binary data in the native data format of a data source to reduce usage of computing resources.
Prior art US Doc 20050071809 proposes a system to dynamically map a type of data to appropriate serialization agent based on a type mapping system. Although this system enables dynamic mapping of data to corresponding data serialization function, this system does not address the need to transfer serialized binary data in the native data format of a data source to reduce usage of computing resources.
Prior art US Doc 20040268242 proposes a system to map data structures to a extensible markup language (XML) encoding format with duplicate data encoded as references to reduce the amount of data transferred. But XML is a text based transfer format and does not address the needs of a binary transfer protocol. Hence this system does not address the need to transfer serialized binary data in the native data format of a data source to reduce usage of computing resources.
Prior art U.S. Pat. No. 7,150,004 describes a system where data mapping for serialization is done automatically hence enabling serialization and deserialization to adapt to incompatibilities. But this does not address the need to reduce amount of processing that will be needed for data conversion at data source and data destination. This only addresses automatic format creation based on data source and destination.
As can be seen from above, all known prior arts suffer from some limitations in offering a solution to address the need for a data serialization system that enables data transfer from a data source to data destination with no conversion needed at a data source to save on computing resources.